package com.algo.tools.dataset_generator;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;

/**
* This class is for generating transaction databases
* 
* Copyright (c) 2012 Philippe Fournier-Viger
* 
* This file is part of the SPMF DATA MINING SOFTWARE
* ( http://www.philippe-fournier-viger.com/spmf/ ).
*
* SPMF is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* SPMF is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with SPMF.  If not, see <http://www.gnu.org/licenses/>.
*/
public class TransactionDatabaseGenerator {

	private static Random random = new Random(System.currentTimeMillis());

	/**
	 * @param transactionCount transaction count
	 * @param maxDistinctItems maximum number of distint items
	 * @param maxItemCountPerTransaction maximum number of items per transaction
	 * @throws IOException 
	 */
	public  void generateDatabase(int transactionCount, int maxDistinctItems, int maxItemCountPerTransaction,
			String output) throws IOException {
		
		BufferedWriter writer = new BufferedWriter(new FileWriter(output)); 
		// Generate some random sequences
		for (int i = 0; i < transactionCount; i++) {
			if(i != 0){
				writer.newLine();
			}
			int itemCount = random.nextInt(maxItemCountPerTransaction) + 1;
			for (int j = 0; j < itemCount; j++) {
				if(j != 0){
					writer.write(" ");
				}
				int item = random.nextInt(maxDistinctItems) + 1;
				writer.write(""+item);
			}
		}
		writer.close();
	}
}